package cn.hy.机考.part03;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Scanner;

/**
 * @author hy
 * 二十九、找车位
 * 停车场有一横排车位，0代表没有停车，1代表有车。至少停了一辆车在车位上，也至少有一个空位没有停车。
 * <p>
 * 为了防剐蹭，需为停车人找到一个车位，使得距停车人的车最近的车辆的距离是最大的，返回此时的最大距离。
 * <p>
 * 输入描述:
 * 1、一个用半角逗号分割的停车标识字符串，停车标识为0或1，0为空位，1为已停车。
 * 2、停车位最多100个。
 * 输出描述:
 * 输出一个整数记录最大距离。
 * <p>
 * 输出一个整数记录最大距离
 * 1,0,0,0,0,1,0,0,1,0,1,0,0,1,1,0,0
 * 2
 */
public class Demo29 {


    /**
     * 求最大距离，就是求连续0的最大长度。
     * 如果是偶数直接除以2；如果是奇数则 -1除以2。
     * <p>
     * 难点是要考虑到前后为0的情形，这两种情形是不需要进行除法的。
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String[] str = sc.nextLine().split(",");
            List<Integer> list = new ArrayList<>();
            //第一步先把所有1的位置储存到list中
            for (int i = 0; i < str.length; i++) {
                if (str[i].equals("1")) {
                    list.add(i);
                }
            }
            //第二步判断首尾如果为零，那么不需要除以二
            int maxBE = 0;
            if (str[0].equals("0")) {
                maxBE = Math.max(maxBE, list.get(0));
            }
            if (Objects.equals(str[str.length - 1], "0")) {
                maxBE = Math.max(maxBE, str.length - 1 - list.get(list.size() - 1));
            }
            //第三步判断两个1中间的距离
            int max = 0;
            for (int i = 1; i < list.size(); i++) {
                max = Math.max(max, list.get(i) - list.get(i - 1));
            }

            if (max % 2 == 0) {
                System.out.println(Math.max(maxBE, max / 2));
            } else {
                System.out.println(Math.max(maxBE, (max - 1) / 2));
            }
        }
    }
}
